/* prototype */
function Foo(){}

Foo.prototype = {
	foo : function () { alert('hello!')}
};

var instanceOfFoo = new Foo();
instanceOfFoo.foo(); //=> 'hello!'

/* prototype chain */
function Foo(){} 
Foo.prototype = {
	foo : function () { alert('hello!')}
};

function Bar() {}
Bar.prototype = new Foo();
Bar.prototype.bar = function () { this.foo() };

var instanceOfBar = new Bar();
instanceOfBar.bar(); //=> 'hello!'


/* this 暗黙的に渡される引数のようなもの Perlの$selfみたいなもの */
var a = { foo : function () { alert( a === this) } };
a.foo(); //=> true
a.foo.call(); //=> false

